]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
status/keyboard: When per-window, choose the first IS for new windows
authorRui Matos <tiagomatos@gmail.com>
Wed, 11 Mar 2015 14:48:03 +0000 (15:48 +0100)
committerRui Matos <tiagomatos@gmail.com>
Thu, 12 Mar 2015 16:55:47 +0000 (17:55 +0100)
This was libgnomekbd's behavior and seems to be prefered by users.

https://bugzilla.gnome.org/show_bug.cgi?id=746037

js/ui/status/keyboard.js

index 317955439201623cd2a01fdc91f1aafa3b6f5886..b5f53fd9ea4b9634e730f6a2a6df4248a6d971f9 100644 (file)
@@ -475,13 +475,20 @@ const InputSourceManager = new Lang.Class({
     },
 
     _getNewInputSource: function(current) {
-        for (let i in this._inputSources) {
-            let is = this._inputSources[i];
-            if (is.type == current.type &&
-                is.id == current.id)
-                return is;
+        let sourceIndexes = Object.keys(this._inputSources);
+        if (sourceIndexes.length == 0)
+            return null;
+
+        if (current) {
+            for (let i in this._inputSources) {
+                let is = this._inputSources[i];
+                if (is.type == current.type &&
+                    is.id == current.id)
+                    return is;
+            }
         }
-        return this._currentSource;
+
+        return this._inputSources[sourceIndexes[0]];
     },
 
     _getCurrentWindow: function() {
@@ -496,16 +503,13 @@ const InputSourceManager = new Lang.Class({
         if (!window)
             return;
 
-        if (!window._inputSources) {
-            window._inputSources = this._inputSources;
-            window._currentSource = this._currentSource;
-        } else if (window._inputSources == this._inputSources) {
-            window._currentSource.activate();
-        } else {
+        if (window._inputSources != this._inputSources) {
             window._inputSources = this._inputSources;
             window._currentSource = this._getNewInputSource(window._currentSource);
-            window._currentSource.activate();
         }
+
+        if (window._currentSource)
+            window._currentSource.activate();
     },
 
     _sourcesPerWindowChanged: function() {